
// 单词翻译模块
//需要一本字典
#include <iostream>
#include <string>
#include <fstream>
#include <unordered_map>
#include "InetAddr.hpp"

const std::string dict_path="./dictionary.txt";

class Dict
{
public:
    Dict(const std::string path=dict_path)
    :_dict_path(path)
    {}
    ~Dict()
    {}
    //将字典中的内容加载到内存中，用哈希表保存
    void LoadDict()
    {
        //文件系统
        //读文件
        std::ifstream in(_dict_path);
        if(!in.is_open())
        {
            std::cout<<"打开字典失败"<<std::endl;
            return;
        }
        //按行读取内容 
        std::string line;
        while(std::getline(in,line))
        {
            //分割字符串
            auto pos=line.find(": ");//返回值是迭代器
            if(pos==std::string::npos)
            {
                std::cout<<"字典内容不规范"<<std::endl;
                continue;
            }
            std::string english=line.substr(0,pos);
            std::string chinese=line.substr(pos+2);
            if(english.empty()||chinese.empty())
            {
                continue;
            }
            _dict.insert(std::make_pair(english,chinese));
        }
        in.close();
        //完成加载任务
    }
    //实现翻译功能
    std::string Translate(const std::string english)
    {
        auto it=_dict.find(english);
        if(it==_dict.end())
        {
            std::cout<<english<<",该单词不存在!!!"<<std::endl;
            return "none";
        }
        return it->second;
        //完成翻译任务
    }
private:
    std::string _dict_path;//字典所在的路径
    std::unordered_map<std::string,std::string> _dict;//字典
};
